<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>xilsecure: XilSecure ECDSA Server APIs</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="HTML_custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="xlogo_bg.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">xilsecure
   </div>
   <div id="projectbrief">Vitis Drivers API Documentation</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Overview</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="globals.html"><span>APIs</span></a></li>
      <li><a href="files.html"><span>File&#160;List</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;"
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('group__xsecure__ecdsa__server__apis.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">XilSecure ECDSA Server APIs</div>  </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_x_secure___elliptc_private_key_gen.html">XSecure_ElliptcPrivateKeyGen</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Ecc private key generation parameters.  <a href="struct_x_secure___elliptc_private_key_gen.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_x_secure___elliptic_key.html">XSecure_EllipticKey</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Structure for pointers of public key curve points.  <a href="struct_x_secure___elliptic_key.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_x_secure___elliptic_sign.html">XSecure_EllipticSign</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Structure for pointers of signature components.  <a href="struct_x_secure___elliptic_sign.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_x_secure___elliptic_key_addr.html">XSecure_EllipticKeyAddr</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Structure for addresses of public key curve points.  <a href="struct_x_secure___elliptic_key_addr.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_x_secure___elliptic_sign_addr.html">XSecure_EllipticSignAddr</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Structure for addresses of signature components.  <a href="struct_x_secure___elliptic_sign_addr.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_x_secure___elliptic_hash_data.html">XSecure_EllipticHashData</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Structure for input parameters Hash and Length for Elliptic Sign generation.  <a href="struct_x_secure___elliptic_hash_data.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:gab50d8d53c6a959b985095de243e7d5c9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#gab50d8d53c6a959b985095de243e7d5c9">XSECURE_ECC_TRNG_DF_LENGTH</a>&#160;&#160;&#160;(2U)</td></tr>
<tr class="memdesc:gab50d8d53c6a959b985095de243e7d5c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default length of xilsecure ecc true random number generator.  <a href="#gab50d8d53c6a959b985095de243e7d5c9">More...</a><br/></td></tr>
<tr class="separator:gab50d8d53c6a959b985095de243e7d5c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4b82c9f2c323f6a642a469b883a85bef"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#ga4b82c9f2c323f6a642a469b883a85bef">XSECURE_ECC_TRNG_RANDOM_NUM_GEN_LEN</a>&#160;&#160;&#160;(60U)</td></tr>
<tr class="memdesc:ga4b82c9f2c323f6a642a469b883a85bef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Length of xilsecure ecc true random number generator.  <a href="#ga4b82c9f2c323f6a642a469b883a85bef">More...</a><br/></td></tr>
<tr class="separator:ga4b82c9f2c323f6a642a469b883a85bef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5bce9c7826b6403ae45442ead7f1cd65"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#ga5bce9c7826b6403ae45442ead7f1cd65">XSECURE_ECDSA_ALGN_CRV_SIZE_IN_BYTES</a>&#160;&#160;&#160;(2U)</td></tr>
<tr class="memdesc:ga5bce9c7826b6403ae45442ead7f1cd65"><td class="mdescLeft">&#160;</td><td class="mdescRight">Align ECDSA curve size in bytes.  <a href="#ga5bce9c7826b6403ae45442ead7f1cd65">More...</a><br/></td></tr>
<tr class="separator:ga5bce9c7826b6403ae45442ead7f1cd65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab4f953836088ef7ce1b74abd75023bde"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#gab4f953836088ef7ce1b74abd75023bde">XSECURE_ECDSA_BITS_IN_BYTES</a>&#160;&#160;&#160;(8U)</td></tr>
<tr class="memdesc:gab4f953836088ef7ce1b74abd75023bde"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bits in bytes.  <a href="#gab4f953836088ef7ce1b74abd75023bde">More...</a><br/></td></tr>
<tr class="separator:gab4f953836088ef7ce1b74abd75023bde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2a9ae41886d6bd60c8b8a0f896847e58"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#ga2a9ae41886d6bd60c8b8a0f896847e58">XSECURE_ECC_P384_SIZE_IN_BYTES</a>&#160;&#160;&#160;(48U)</td></tr>
<tr class="memdesc:ga2a9ae41886d6bd60c8b8a0f896847e58"><td class="mdescLeft">&#160;</td><td class="mdescRight">Size of NIST P-384 curve in bytes.  <a href="#ga2a9ae41886d6bd60c8b8a0f896847e58">More...</a><br/></td></tr>
<tr class="separator:ga2a9ae41886d6bd60c8b8a0f896847e58"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad7f0fdd86e7cf849e595e156156b7804"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#gad7f0fdd86e7cf849e595e156156b7804">XSECURE_ECC_P521_SIZE_IN_BYTES</a>&#160;&#160;&#160;(66U)</td></tr>
<tr class="memdesc:gad7f0fdd86e7cf849e595e156156b7804"><td class="mdescLeft">&#160;</td><td class="mdescRight">Size of NIST P-521 curve in bytes.  <a href="#gad7f0fdd86e7cf849e595e156156b7804">More...</a><br/></td></tr>
<tr class="separator:gad7f0fdd86e7cf849e595e156156b7804"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae3028dc8cdad7058c8a68feca364f6df"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#gae3028dc8cdad7058c8a68feca364f6df">XSECURE_ECC_P256_SIZE_IN_BYTES</a>&#160;&#160;&#160;(32U)</td></tr>
<tr class="memdesc:gae3028dc8cdad7058c8a68feca364f6df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Size of NIST P-256 curve in bytes.  <a href="#gae3028dc8cdad7058c8a68feca364f6df">More...</a><br/></td></tr>
<tr class="separator:gae3028dc8cdad7058c8a68feca364f6df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga26187a912fd3da2eb9cea5f36b25a709"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#ga26187a912fd3da2eb9cea5f36b25a709">XSECURE_ECC_P192_SIZE_IN_BYTES</a>&#160;&#160;&#160;(24U)</td></tr>
<tr class="memdesc:ga26187a912fd3da2eb9cea5f36b25a709"><td class="mdescLeft">&#160;</td><td class="mdescRight">Size of NIST P-192 curve in bytes.  <a href="#ga26187a912fd3da2eb9cea5f36b25a709">More...</a><br/></td></tr>
<tr class="separator:ga26187a912fd3da2eb9cea5f36b25a709"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga192d103795f91f2cfa9a4b9cca781285"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#ga192d103795f91f2cfa9a4b9cca781285">XSECURE_ECC_P224_SIZE_IN_BYTES</a>&#160;&#160;&#160;(28U)</td></tr>
<tr class="memdesc:ga192d103795f91f2cfa9a4b9cca781285"><td class="mdescLeft">&#160;</td><td class="mdescRight">Size of NIST P-224 curve in bytes.  <a href="#ga192d103795f91f2cfa9a4b9cca781285">More...</a><br/></td></tr>
<tr class="separator:ga192d103795f91f2cfa9a4b9cca781285"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2617ad08234f40b7da71060fd6eb9ec7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#ga2617ad08234f40b7da71060fd6eb9ec7">XSECURE_ECDSA_P521_ALIGN_BYTES</a>&#160;&#160;&#160;(2U)</td></tr>
<tr class="memdesc:ga2617ad08234f40b7da71060fd6eb9ec7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Size of NIST P-521 curve is 66 bytes.  <a href="#ga2617ad08234f40b7da71060fd6eb9ec7">More...</a><br/></td></tr>
<tr class="separator:ga2617ad08234f40b7da71060fd6eb9ec7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6a551adc342018909d5b53bffca62d3a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#ga6a551adc342018909d5b53bffca62d3a">XSECURE_ELLIPTIC_LITTLE_ENDIAN</a>&#160;&#160;&#160;(0U)</td></tr>
<tr class="memdesc:ga6a551adc342018909d5b53bffca62d3a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Operates APIs on little endian format.  <a href="#ga6a551adc342018909d5b53bffca62d3a">More...</a><br/></td></tr>
<tr class="separator:ga6a551adc342018909d5b53bffca62d3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga0219841abd9a6a67cd5e80f8a5ec0d30"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_ecdsa_crv_info.html">EcdsaCrvInfo</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#ga0219841abd9a6a67cd5e80f8a5ec0d30">XSecure_EllipticGetCrvData</a> (<a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a> CrvTyp)</td></tr>
<tr class="memdesc:ga0219841abd9a6a67cd5e80f8a5ec0d30"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function gets the curve related information.  <a href="#ga0219841abd9a6a67cd5e80f8a5ec0d30">More...</a><br/></td></tr>
<tr class="separator:ga0219841abd9a6a67cd5e80f8a5ec0d30"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga261ca30dbb2a3390cac39562e499f63a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#ga261ca30dbb2a3390cac39562e499f63a">XSecure_EllipticPrvtKeyGenerate</a> (<a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a> CrvType, <a class="el" href="struct_x_secure___elliptc_private_key_gen.html">XSecure_ElliptcPrivateKeyGen</a> *PrivateKey)</td></tr>
<tr class="memdesc:ga261ca30dbb2a3390cac39562e499f63a"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function generates 48-byte key for P-384 curve using TRNG.  <a href="#ga261ca30dbb2a3390cac39562e499f63a">More...</a><br/></td></tr>
<tr class="separator:ga261ca30dbb2a3390cac39562e499f63a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9566bee278ec58acd705a67ee9d58766"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#ga9566bee278ec58acd705a67ee9d58766">XSecure_EllipticGenerateEphemeralKey</a> (<a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a> CrvType, u32 EphemeralKeyAddr)</td></tr>
<tr class="memdesc:ga9566bee278ec58acd705a67ee9d58766"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function generates 48-byte ephemeral key for P-384 curve using TRNG.  <a href="#ga9566bee278ec58acd705a67ee9d58766">More...</a><br/></td></tr>
<tr class="separator:ga9566bee278ec58acd705a67ee9d58766"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae456632737631e0943f3a473c1642f35"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#gae456632737631e0943f3a473c1642f35">XSecure_EllipticGenEphemeralNSign</a> (<a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a> CrvType, const u8 *Hash, u32 HashLen, u8 *PrvtKey, u8 *Signature)</td></tr>
<tr class="memdesc:gae456632737631e0943f3a473c1642f35"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function generates the signature on provided hash using ecc.  <a href="#gae456632737631e0943f3a473c1642f35">More...</a><br/></td></tr>
<tr class="separator:gae456632737631e0943f3a473c1642f35"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab3835b878d2947b3f94ba4cd555dd641"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#gab3835b878d2947b3f94ba4cd555dd641">XSecure_EcdhGetSecret</a> (<a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a> CrvType, u64 PrvtKeyAddr, u64 PubKeyAddr, u64 SharedSecretAddr)</td></tr>
<tr class="memdesc:gab3835b878d2947b3f94ba4cd555dd641"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is a wrapper function which calls the IPCores API to perform ECDH and generate shared secret.  <a href="#gab3835b878d2947b3f94ba4cd555dd641">More...</a><br/></td></tr>
<tr class="separator:gab3835b878d2947b3f94ba4cd555dd641"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5c01365d664f53f9b987711c52f7bee8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#ga5c01365d664f53f9b987711c52f7bee8">XSecure_PlatEllipticIpiHandler</a> (XPlmi_Cmd *Cmd)</td></tr>
<tr class="memdesc:ga5c01365d664f53f9b987711c52f7bee8"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function calls respective IPI handler based on the API_ID.  <a href="#ga5c01365d664f53f9b987711c52f7bee8">More...</a><br/></td></tr>
<tr class="separator:ga5c01365d664f53f9b987711c52f7bee8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga682282def21e1c86ab583cdd41090fbb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#ga682282def21e1c86ab583cdd41090fbb">XSecure_EllipticGenerateKey_64Bit</a> (<a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a> CrvType, const u64 DAddr, const <a class="el" href="struct_x_secure___elliptic_key_addr.html">XSecure_EllipticKeyAddr</a> *KeyAddr)</td></tr>
<tr class="memdesc:ga682282def21e1c86ab583cdd41090fbb"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function generates Public Key for a given curve type using private key where both keys located at 64 bit address.  <a href="#ga682282def21e1c86ab583cdd41090fbb">More...</a><br/></td></tr>
<tr class="separator:ga682282def21e1c86ab583cdd41090fbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3fcdd9235bcbb13f538c106bc6e32bcf"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#ga3fcdd9235bcbb13f538c106bc6e32bcf">XSecure_EllipticGenerateKey</a> (<a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a> CrvType, const u8 *<a class="el" href="xsecure__lms_8h.html#ab14788fbc92abcbc0e153a93b1f28cd2">D</a>, const <a class="el" href="struct_x_secure___elliptic_key.html">XSecure_EllipticKey</a> *Key)</td></tr>
<tr class="memdesc:ga3fcdd9235bcbb13f538c106bc6e32bcf"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function generates Public Key for a given curve type.  <a href="#ga3fcdd9235bcbb13f538c106bc6e32bcf">More...</a><br/></td></tr>
<tr class="separator:ga3fcdd9235bcbb13f538c106bc6e32bcf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3af7e8a366bb982fa4c0c82be1b37250"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#ga3af7e8a366bb982fa4c0c82be1b37250">XSecure_EllipticGenerateSignature_64Bit</a> (<a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a> CrvType, const <a class="el" href="struct_x_secure___elliptic_hash_data.html">XSecure_EllipticHashData</a> *HashInfo, const u64 DAddr, const u64 KAddr, const <a class="el" href="struct_x_secure___elliptic_sign_addr.html">XSecure_EllipticSignAddr</a> *SignAddr)</td></tr>
<tr class="memdesc:ga3af7e8a366bb982fa4c0c82be1b37250"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function generates signature for a given hash and curve type where data is located at 64-bit address.  <a href="#ga3af7e8a366bb982fa4c0c82be1b37250">More...</a><br/></td></tr>
<tr class="separator:ga3af7e8a366bb982fa4c0c82be1b37250"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacfb2a9d041a4b449a47874add5f01547"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#gacfb2a9d041a4b449a47874add5f01547">XSecure_EllipticGenerateSignature</a> (<a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a> CrvType, const u8 *Hash, const u32 HashLen, const u8 *<a class="el" href="xsecure__lms_8h.html#ab14788fbc92abcbc0e153a93b1f28cd2">D</a>, const u8 *<a class="el" href="xsecure__lms__ots_8h.html#a1409f77262465120c3094dcd039e1f32">K</a>, const <a class="el" href="struct_x_secure___elliptic_sign.html">XSecure_EllipticSign</a> *Sign)</td></tr>
<tr class="memdesc:gacfb2a9d041a4b449a47874add5f01547"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function generates signature for a given hash and curve type.  <a href="#gacfb2a9d041a4b449a47874add5f01547">More...</a><br/></td></tr>
<tr class="separator:gacfb2a9d041a4b449a47874add5f01547"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab83385dfd83a7bfdef4d74ec412e15c6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#gab83385dfd83a7bfdef4d74ec412e15c6">XSecure_EllipticValidateKey_64Bit</a> (<a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a> CrvType, const <a class="el" href="struct_x_secure___elliptic_key_addr.html">XSecure_EllipticKeyAddr</a> *KeyAddr)</td></tr>
<tr class="memdesc:gab83385dfd83a7bfdef4d74ec412e15c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function validates the public key for a given curve type where key is located at 64-bit address.  <a href="#gab83385dfd83a7bfdef4d74ec412e15c6">More...</a><br/></td></tr>
<tr class="separator:gab83385dfd83a7bfdef4d74ec412e15c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga35ed639454381d4bcf89858e55b9c980"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#ga35ed639454381d4bcf89858e55b9c980">XSecure_EllipticValidateKey</a> (<a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a> CrvType, const <a class="el" href="struct_x_secure___elliptic_key.html">XSecure_EllipticKey</a> *Key)</td></tr>
<tr class="memdesc:ga35ed639454381d4bcf89858e55b9c980"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function validates the public key for a given curve type.  <a href="#ga35ed639454381d4bcf89858e55b9c980">More...</a><br/></td></tr>
<tr class="separator:ga35ed639454381d4bcf89858e55b9c980"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0bb6ca50d138b482eb9a5d9f18e398d8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#ga0bb6ca50d138b482eb9a5d9f18e398d8">XSecure_EllipticVerifySign_64Bit</a> (<a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a> CrvType, const <a class="el" href="struct_x_secure___elliptic_hash_data.html">XSecure_EllipticHashData</a> *HashInfo, const <a class="el" href="struct_x_secure___elliptic_key_addr.html">XSecure_EllipticKeyAddr</a> *KeyAddr, const <a class="el" href="struct_x_secure___elliptic_sign_addr.html">XSecure_EllipticSignAddr</a> *SignAddr)</td></tr>
<tr class="memdesc:ga0bb6ca50d138b482eb9a5d9f18e398d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function verifies the signature for a given hash, key and curve type where data is located at 64-bit address.  <a href="#ga0bb6ca50d138b482eb9a5d9f18e398d8">More...</a><br/></td></tr>
<tr class="separator:ga0bb6ca50d138b482eb9a5d9f18e398d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7d2dfbb593a38b3bb47d1ab26fb0cfea"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#ga7d2dfbb593a38b3bb47d1ab26fb0cfea">XSecure_EllipticVerifySign</a> (<a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a> CrvType, const u8 *Hash, const u32 HashLen, const <a class="el" href="struct_x_secure___elliptic_key.html">XSecure_EllipticKey</a> *Key, const <a class="el" href="struct_x_secure___elliptic_sign.html">XSecure_EllipticSign</a> *Sign)</td></tr>
<tr class="memdesc:ga7d2dfbb593a38b3bb47d1ab26fb0cfea"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function verifies the signature for a given hash, key and curve type.  <a href="#ga7d2dfbb593a38b3bb47d1ab26fb0cfea">More...</a><br/></td></tr>
<tr class="separator:ga7d2dfbb593a38b3bb47d1ab26fb0cfea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaeae4245a96b56ed57680a2df01da5944"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#gaeae4245a96b56ed57680a2df01da5944">XSecure_PutData</a> (const u32 Size, u8 *Dst, const u64 SrcAddr)</td></tr>
<tr class="memdesc:gaeae4245a96b56ed57680a2df01da5944"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function copies data from 32/64 bit address to local buffer.  <a href="#gaeae4245a96b56ed57680a2df01da5944">More...</a><br/></td></tr>
<tr class="separator:gaeae4245a96b56ed57680a2df01da5944"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4b04814c049951cd68c6f1a32ffcb707"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#ga4b04814c049951cd68c6f1a32ffcb707">XSecure_GetData</a> (const u32 Size, const u8 *Src, const u64 DstAddr)</td></tr>
<tr class="memdesc:ga4b04814c049951cd68c6f1a32ffcb707"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function copies data to 32/64 bit address from local buffer.  <a href="#ga4b04814c049951cd68c6f1a32ffcb707">More...</a><br/></td></tr>
<tr class="separator:ga4b04814c049951cd68c6f1a32ffcb707"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab4982b81bdf14b95cfbf9ec1be61bf61"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#gab4982b81bdf14b95cfbf9ec1be61bf61">XSecure_FixEndiannessNCopy</a> (const u32 Size, u64 DstAddr, const u64 SrcAddr)</td></tr>
<tr class="memdesc:gab4982b81bdf14b95cfbf9ec1be61bf61"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function copies data to destination based on library endianness selection.  <a href="#gab4982b81bdf14b95cfbf9ec1be61bf61">More...</a><br/></td></tr>
<tr class="separator:gab4982b81bdf14b95cfbf9ec1be61bf61"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1d8ce761d128ed9438878593bc349c36"><td class="memItemLeft" align="right" valign="top">u32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#ga1d8ce761d128ed9438878593bc349c36">XSecure_EllipticGetCrvSize</a> (const <a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a> CrvType)</td></tr>
<tr class="memdesc:ga1d8ce761d128ed9438878593bc349c36"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function gets curve size in bytes.  <a href="#ga1d8ce761d128ed9438878593bc349c36">More...</a><br/></td></tr>
<tr class="separator:ga1d8ce761d128ed9438878593bc349c36"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga898afa7a2d84540bb675ddeaeb33442f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#ga898afa7a2d84540bb675ddeaeb33442f">XSecure_EllipticIpiHandler</a> (XPlmi_Cmd *Cmd)</td></tr>
<tr class="memdesc:ga898afa7a2d84540bb675ddeaeb33442f"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function calls respective IPI handler based on the API_ID.  <a href="#ga898afa7a2d84540bb675ddeaeb33442f">More...</a><br/></td></tr>
<tr class="separator:ga898afa7a2d84540bb675ddeaeb33442f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga895d2b6ca4395e34aa3c948bcc09a145"><td class="memItemLeft" align="right" valign="top">u32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#ga895d2b6ca4395e34aa3c948bcc09a145">XSecure_EllipticCrvsGetCount</a> (void)</td></tr>
<tr class="memdesc:ga895d2b6ca4395e34aa3c948bcc09a145"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function calculates the total number of curves supported.  <a href="#ga895d2b6ca4395e34aa3c948bcc09a145">More...</a><br/></td></tr>
<tr class="separator:ga895d2b6ca4395e34aa3c948bcc09a145"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Supported ECC curves</h2></td></tr>
<tr class="memitem:ga12532d3c3d2236cb78d2adbd2a56276f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xsecure__ecdsa__server__apis.html#ga12532d3c3d2236cb78d2adbd2a56276f">XSECURE_ECC_SUPPORT_NIST_P384</a></td></tr>
<tr class="memdesc:ga12532d3c3d2236cb78d2adbd2a56276f"><td class="mdescLeft">&#160;</td><td class="mdescRight">&lt; Macros to enable /disable support of NIST P-384 and NIST P-521 curve  <a href="#ga12532d3c3d2236cb78d2adbd2a56276f">More...</a><br/></td></tr>
<tr class="separator:ga12532d3c3d2236cb78d2adbd2a56276f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="ga26187a912fd3da2eb9cea5f36b25a709"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_ECC_P192_SIZE_IN_BYTES&#160;&#160;&#160;(24U)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Size of NIST P-192 curve in bytes. </p>

<p>Referenced by <a class="el" href="group__xsecure__kat__server__apis.html#ga7e6af9c7d2a5b9c134f201143b5caaca">XSecure_EllipticPwct()</a>.</p>

</div>
</div>
<a class="anchor" id="ga192d103795f91f2cfa9a4b9cca781285"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_ECC_P224_SIZE_IN_BYTES&#160;&#160;&#160;(28U)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Size of NIST P-224 curve in bytes. </p>

<p>Referenced by <a class="el" href="group__xsecure__kat__server__apis.html#ga7e6af9c7d2a5b9c134f201143b5caaca">XSecure_EllipticPwct()</a>.</p>

</div>
</div>
<a class="anchor" id="gae3028dc8cdad7058c8a68feca364f6df"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_ECC_P256_SIZE_IN_BYTES&#160;&#160;&#160;(32U)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Size of NIST P-256 curve in bytes. </p>

<p>Referenced by <a class="el" href="group__xsecure__ecdsa__server__apis.html#gab3835b878d2947b3f94ba4cd555dd641">XSecure_EcdhGetSecret()</a>, and <a class="el" href="group__xsecure__kat__server__apis.html#ga7e6af9c7d2a5b9c134f201143b5caaca">XSecure_EllipticPwct()</a>.</p>

</div>
</div>
<a class="anchor" id="ga2a9ae41886d6bd60c8b8a0f896847e58"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_ECC_P384_SIZE_IN_BYTES&#160;&#160;&#160;(48U)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Size of NIST P-384 curve in bytes. </p>

<p>Referenced by <a class="el" href="group__xsecure__ecdsa__server__apis.html#gab3835b878d2947b3f94ba4cd555dd641">XSecure_EcdhGetSecret()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#gae456632737631e0943f3a473c1642f35">XSecure_EllipticGenEphemeralNSign()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga9566bee278ec58acd705a67ee9d58766">XSecure_EllipticGenerateEphemeralKey()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga261ca30dbb2a3390cac39562e499f63a">XSecure_EllipticPrvtKeyGenerate()</a>, <a class="el" href="group__xsecure__kat__server__apis.html#ga7e6af9c7d2a5b9c134f201143b5caaca">XSecure_EllipticPwct()</a>, <a class="el" href="group__xsecure__kat__server__apis.html#ga75b2f22f2f6c3bdb9529025c8ecf58f2">XSecure_EllipticSignGenerateKat()</a>, <a class="el" href="group__xsecure__kat__server__apis.html#ga769778c653dd202471b5eec4249b1f25">XSecure_GetKatEccExpSign()</a>, and <a class="el" href="group__xsecure__kat__server__apis.html#gaa3ec8efc0badbd66518768e16b2dcc81">XSecure_GetKatEccPublicKey()</a>.</p>

</div>
</div>
<a class="anchor" id="gad7f0fdd86e7cf849e595e156156b7804"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_ECC_P521_SIZE_IN_BYTES&#160;&#160;&#160;(66U)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Size of NIST P-521 curve in bytes. </p>

<p>Referenced by <a class="el" href="group__xsecure__ecdsa__server__apis.html#gab3835b878d2947b3f94ba4cd555dd641">XSecure_EcdhGetSecret()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga682282def21e1c86ab583cdd41090fbb">XSecure_EllipticGenerateKey_64Bit()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#gacfb2a9d041a4b449a47874add5f01547">XSecure_EllipticGenerateSignature()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga3af7e8a366bb982fa4c0c82be1b37250">XSecure_EllipticGenerateSignature_64Bit()</a>, <a class="el" href="group__xsecure__kat__server__apis.html#ga7e6af9c7d2a5b9c134f201143b5caaca">XSecure_EllipticPwct()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#gab83385dfd83a7bfdef4d74ec412e15c6">XSecure_EllipticValidateKey_64Bit()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga7d2dfbb593a38b3bb47d1ab26fb0cfea">XSecure_EllipticVerifySign()</a>, and <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga0bb6ca50d138b482eb9a5d9f18e398d8">XSecure_EllipticVerifySign_64Bit()</a>.</p>

</div>
</div>
<a class="anchor" id="ga12532d3c3d2236cb78d2adbd2a56276f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_ECC_SUPPORT_NIST_P384</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>&lt; Macros to enable /disable support of NIST P-384 and NIST P-521 curve </p>

</div>
</div>
<a class="anchor" id="gab50d8d53c6a959b985095de243e7d5c9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_ECC_TRNG_DF_LENGTH&#160;&#160;&#160;(2U)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Default length of xilsecure ecc true random number generator. </p>

<p>Referenced by <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga261ca30dbb2a3390cac39562e499f63a">XSecure_EllipticPrvtKeyGenerate()</a>.</p>

</div>
</div>
<a class="anchor" id="ga4b82c9f2c323f6a642a469b883a85bef"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_ECC_TRNG_RANDOM_NUM_GEN_LEN&#160;&#160;&#160;(60U)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Length of xilsecure ecc true random number generator. </p>

<p>Referenced by <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga9566bee278ec58acd705a67ee9d58766">XSecure_EllipticGenerateEphemeralKey()</a>, and <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga261ca30dbb2a3390cac39562e499f63a">XSecure_EllipticPrvtKeyGenerate()</a>.</p>

</div>
</div>
<a class="anchor" id="ga5bce9c7826b6403ae45442ead7f1cd65"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_ECDSA_ALGN_CRV_SIZE_IN_BYTES&#160;&#160;&#160;(2U)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Align ECDSA curve size in bytes. </p>

<p>Referenced by <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga1d8ce761d128ed9438878593bc349c36">XSecure_EllipticGetCrvSize()</a>.</p>

</div>
</div>
<a class="anchor" id="gab4f953836088ef7ce1b74abd75023bde"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_ECDSA_BITS_IN_BYTES&#160;&#160;&#160;(8U)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Bits in bytes. </p>

<p>Referenced by <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga1d8ce761d128ed9438878593bc349c36">XSecure_EllipticGetCrvSize()</a>.</p>

</div>
</div>
<a class="anchor" id="ga2617ad08234f40b7da71060fd6eb9ec7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_ECDSA_P521_ALIGN_BYTES&#160;&#160;&#160;(2U)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Size of NIST P-521 curve is 66 bytes. </p>
<p>This macro is used to make the address word aligned </p>

<p>Referenced by <a class="el" href="group__xsecure__ecdsa__server__apis.html#gab3835b878d2947b3f94ba4cd555dd641">XSecure_EcdhGetSecret()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga682282def21e1c86ab583cdd41090fbb">XSecure_EllipticGenerateKey_64Bit()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga3af7e8a366bb982fa4c0c82be1b37250">XSecure_EllipticGenerateSignature_64Bit()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#gab83385dfd83a7bfdef4d74ec412e15c6">XSecure_EllipticValidateKey_64Bit()</a>, and <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga0bb6ca50d138b482eb9a5d9f18e398d8">XSecure_EllipticVerifySign_64Bit()</a>.</p>

</div>
</div>
<a class="anchor" id="ga6a551adc342018909d5b53bffca62d3a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSECURE_ELLIPTIC_LITTLE_ENDIAN&#160;&#160;&#160;(0U)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Operates APIs on little endian format. </p>

<p>Referenced by <a class="el" href="group__xsecure__ecdsa__server__apis.html#gab4982b81bdf14b95cfbf9ec1be61bf61">XSecure_FixEndiannessNCopy()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga4b04814c049951cd68c6f1a32ffcb707">XSecure_GetData()</a>, and <a class="el" href="group__xsecure__ecdsa__server__apis.html#gaeae4245a96b56ed57680a2df01da5944">XSecure_PutData()</a>.</p>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="gab3835b878d2947b3f94ba4cd555dd641"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int XSecure_EcdhGetSecret </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a>&#160;</td>
          <td class="paramname"><em>CrvType</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u64&#160;</td>
          <td class="paramname"><em>PrvtKeyAddr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u64&#160;</td>
          <td class="paramname"><em>PubKeyAddr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u64&#160;</td>
          <td class="paramname"><em>SharedSecretAddr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This is a wrapper function which calls the IPCores API to perform ECDH and generate shared secret. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">CrvType</td><td>Curve Type of the keys used to generate shared secret </td></tr>
    <tr><td class="paramname">PrvtKeyAddr</td><td>64-bit address of the private key </td></tr>
    <tr><td class="paramname">PubKeyAddr</td><td>64-bit address of public key </td></tr>
    <tr><td class="paramname">SharedSecretAddr</td><td>64-bit address of buffer for storing shared secret</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>XST_SUCCESS On success</li>
<li>XSECURE_ELLIPTIC_INVALID_PARAM If any input parameter is invalid</li>
<li>XSECURE_ELLIPTIC_NON_SUPPORTED_CRV If elliptic curve data received is NULL</li>
<li>XST_FAILURE On failure</li>
</ul>
</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Shared secret is calculated by performing scalar multiplication on public key and private key provided as input. </dd></dl>
<p>Zeroize local copy of key</p>
<p>Zeroize local copy of shared secret</p>

<p>References <a class="el" href="struct_x_secure___elliptic_key_addr.html#a1431fb313924c44d173d0df2c8f01b5b">XSecure_EllipticKeyAddr::Qx</a>, <a class="el" href="struct_x_secure___elliptic_key_addr.html#a78bfd8086c63862b2329ec26e7448e9d">XSecure_EllipticKeyAddr::Qy</a>, <a class="el" href="group__xsecure__generic__server__apis.html#ga162af494e626229733557c1c87fb2e15">XSecure_CryptoCheck()</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a4887100b873751c7ab11f3c25971da31">XSECURE_ECC_NIST_P256</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a96b467bb47305585cbcb31f93d527407">XSECURE_ECC_NIST_P384</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a1ac6872da48c5879c457fb9e0590c36b">XSECURE_ECC_NIST_P521</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#gae3028dc8cdad7058c8a68feca364f6df">XSECURE_ECC_P256_SIZE_IN_BYTES</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga2a9ae41886d6bd60c8b8a0f896847e58">XSECURE_ECC_P384_SIZE_IN_BYTES</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#gad7f0fdd86e7cf849e595e156156b7804">XSECURE_ECC_P521_SIZE_IN_BYTES</a>, <a class="el" href="group__xsecure__helper__server__apis.html#ga7ceaf28c4b557ab6cefc96402262ecc0">XSecure_ECCRandInit()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga2617ad08234f40b7da71060fd6eb9ec7">XSECURE_ECDSA_P521_ALIGN_BYTES</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574a85dc080b8ec968eb80f0638d2d2027ec">XSECURE_ELLIPTIC_INVALID_PARAM</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga0219841abd9a6a67cd5e80f8a5ec0d30">XSecure_EllipticGetCrvData()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga4b04814c049951cd68c6f1a32ffcb707">XSecure_GetData()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#gaeae4245a96b56ed57680a2df01da5944">XSecure_PutData()</a>, <a class="el" href="group__xsecure__generic__server__apis.html#ga448da91f94630d83a52c21b895455ebf">XSecure_ReleaseReset()</a>, and <a class="el" href="group__xsecure__generic__server__apis.html#ga7d9385d1d7121998a9be90e90d3a8f7b">XSecure_SetReset()</a>.</p>

</div>
</div>
<a class="anchor" id="ga895d2b6ca4395e34aa3c948bcc09a145"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">u32 XSecure_EllipticCrvsGetCount </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function calculates the total number of curves supported. </p>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>Number of curves supported </li>
</ul>
</dd></dl>

<p>Referenced by <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga0219841abd9a6a67cd5e80f8a5ec0d30">XSecure_EllipticGetCrvData()</a>.</p>

</div>
</div>
<a class="anchor" id="gae456632737631e0943f3a473c1642f35"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int XSecure_EllipticGenEphemeralNSign </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a>&#160;</td>
          <td class="paramname"><em>CrvType</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const u8 *&#160;</td>
          <td class="paramname"><em>Hash</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u32&#160;</td>
          <td class="paramname"><em>HashLen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u8 *&#160;</td>
          <td class="paramname"><em>PrvtKey</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u8 *&#160;</td>
          <td class="paramname"><em>Signature</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function generates the signature on provided hash using ecc. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">CrvType</td><td>specifies the type of the ECC curve. </td></tr>
    <tr><td class="paramname">Hash</td><td>is the pointer to the hash of the data to be signed </td></tr>
    <tr><td class="paramname">HashLen</td><td>is the length of the hash. </td></tr>
    <tr><td class="paramname">PrvtKey</td><td>is the pointer to ECC private key. </td></tr>
    <tr><td class="paramname">Signature</td><td>is the pointer to the buffer where the ECC signature shall be stored. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>XST_SUCCESS On success</li>
<li>XSECURE_ELLIPTIC_INVALID_PARAM If any input parameter is invalid</li>
<li>XST_FAILURE On failure </li>
</ul>
</dd></dl>
<p>Generate Ephemeral Key using TRNG for generating ECDSA signature</p>
<p>Generate Signature using Private Key to the provided hash</p>
<p>Clear ephemeral key and private key</p>

<p>References <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a1ac6872da48c5879c457fb9e0590c36b">XSECURE_ECC_NIST_P521</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga2a9ae41886d6bd60c8b8a0f896847e58">XSECURE_ECC_P384_SIZE_IN_BYTES</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574a85dc080b8ec968eb80f0638d2d2027ec">XSECURE_ELLIPTIC_INVALID_PARAM</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga9566bee278ec58acd705a67ee9d58766">XSecure_EllipticGenerateEphemeralKey()</a>, and <a class="el" href="group__xsecure__ecdsa__server__apis.html#gacfb2a9d041a4b449a47874add5f01547">XSecure_EllipticGenerateSignature()</a>.</p>

</div>
</div>
<a class="anchor" id="ga9566bee278ec58acd705a67ee9d58766"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int XSecure_EllipticGenerateEphemeralKey </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a>&#160;</td>
          <td class="paramname"><em>CrvType</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u32&#160;</td>
          <td class="paramname"><em>EphemeralKeyAddr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function generates 48-byte ephemeral key for P-384 curve using TRNG. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">CrvType</td><td>Specifies the type of the ECC curve. </td></tr>
    <tr><td class="paramname">EphemeralKeyAddr</td><td>Address of ephemeral key</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>XST_SUCCESS On success</li>
<li>XSECURE_ELLIPTIC_INVALID_PARAM If any input parameter is invalid</li>
<li>XST_FAILURE On failure</li>
</ul>
</dd></dl>
<dl class="section note"><dt>Note</dt><dd>This API expects TRNG HW to be in HEALTHY state, This can be achieved by running preoperational health tests. </dd></dl>

<p>References <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a96b467bb47305585cbcb31f93d527407">XSECURE_ECC_NIST_P384</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a1ac6872da48c5879c457fb9e0590c36b">XSECURE_ECC_NIST_P521</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga2a9ae41886d6bd60c8b8a0f896847e58">XSECURE_ECC_P384_SIZE_IN_BYTES</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574ae33c163e61619dd45351bc33c6fe3cd3">XSECURE_ECC_PRVT_KEY_GEN_ERR</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga4b82c9f2c323f6a642a469b883a85bef">XSECURE_ECC_TRNG_RANDOM_NUM_GEN_LEN</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574a85dc080b8ec968eb80f0638d2d2027ec">XSECURE_ELLIPTIC_INVALID_PARAM</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga0219841abd9a6a67cd5e80f8a5ec0d30">XSecure_EllipticGetCrvData()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga4b04814c049951cd68c6f1a32ffcb707">XSecure_GetData()</a>, <a class="el" href="group__xsecure__trng__server__apis.html#ga57bbf2056be52d8c1d21154930ae0751">XSecure_GetRandomNum()</a>, <a class="el" href="group__xsecure__generic__server__apis.html#ga448da91f94630d83a52c21b895455ebf">XSecure_ReleaseReset()</a>, and <a class="el" href="group__xsecure__generic__server__apis.html#ga7d9385d1d7121998a9be90e90d3a8f7b">XSecure_SetReset()</a>.</p>

<p>Referenced by <a class="el" href="group__xsecure__ecdsa__server__apis.html#gae456632737631e0943f3a473c1642f35">XSecure_EllipticGenEphemeralNSign()</a>.</p>

</div>
</div>
<a class="anchor" id="ga3fcdd9235bcbb13f538c106bc6e32bcf"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int XSecure_EllipticGenerateKey </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a>&#160;</td>
          <td class="paramname"><em>CrvType</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const u8 *&#160;</td>
          <td class="paramname"><em>D</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="struct_x_secure___elliptic_key.html">XSecure_EllipticKey</a> *&#160;</td>
          <td class="paramname"><em>Key</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function generates Public Key for a given curve type. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">CrvType</td><td>Is a type of elliptic curve </td></tr>
    <tr><td class="paramname">D</td><td>Pointer to static private key </td></tr>
    <tr><td class="paramname">Key</td><td>Pointer to public key</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>XST_SUCCESS On success</li>
<li>XSECURE_ELLIPTIC_NON_SUPPORTED_CRV When elliptic Curve is not supported</li>
<li>XSECURE_ELLIPTIC_INVALID_PARAM On invalid argument </li>
</ul>
</dd></dl>
<p>Generate public key with provided private key and curve type </p>

<p>References <a class="el" href="struct_x_secure___elliptic_key.html#a824bafa48e8262572731b4ae7605e1a4">XSecure_EllipticKey::Qx</a>, <a class="el" href="struct_x_secure___elliptic_key_addr.html#a1431fb313924c44d173d0df2c8f01b5b">XSecure_EllipticKeyAddr::Qx</a>, <a class="el" href="struct_x_secure___elliptic_key.html#a69be86ac66e9e1051bc7f2249f76f698">XSecure_EllipticKey::Qy</a>, <a class="el" href="struct_x_secure___elliptic_key_addr.html#a78bfd8086c63862b2329ec26e7448e9d">XSecure_EllipticKeyAddr::Qy</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a56563085e91b2916d8b2597aa5b0518c">XSECURE_ECC_NIST_P192</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6ada7c82dece1225d698e071b37a709a7b">XSECURE_ECC_NIST_P224</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a4887100b873751c7ab11f3c25971da31">XSECURE_ECC_NIST_P256</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a96b467bb47305585cbcb31f93d527407">XSECURE_ECC_NIST_P384</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a1ac6872da48c5879c457fb9e0590c36b">XSECURE_ECC_NIST_P521</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574a85dc080b8ec968eb80f0638d2d2027ec">XSECURE_ELLIPTIC_INVALID_PARAM</a>, and <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga682282def21e1c86ab583cdd41090fbb">XSecure_EllipticGenerateKey_64Bit()</a>.</p>

</div>
</div>
<a class="anchor" id="ga682282def21e1c86ab583cdd41090fbb"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int XSecure_EllipticGenerateKey_64Bit </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a>&#160;</td>
          <td class="paramname"><em>CrvType</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const u64&#160;</td>
          <td class="paramname"><em>DAddr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="struct_x_secure___elliptic_key_addr.html">XSecure_EllipticKeyAddr</a> *&#160;</td>
          <td class="paramname"><em>KeyAddr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function generates Public Key for a given curve type using private key where both keys located at 64 bit address. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">CrvType</td><td>Is a type of elliptic curve </td></tr>
    <tr><td class="paramname">DAddr</td><td>Address of static private key </td></tr>
    <tr><td class="paramname">KeyAddr</td><td>Pointer to public key address</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>XST_SUCCESS On success</li>
<li>XSECURE_ELLIPTIC_NON_SUPPORTED_CRV When elliptic Curve is not supported</li>
<li>XSECURE_ELLIPTIC_INVALID_PARAM On invalid argument</li>
<li>XSECURE_ELLIPTIC_GEN_KEY_ERR Error in generating Public key </li>
</ul>
</dd></dl>
<p>Generate public key with provided private key and curve type </p>

<p>References <a class="el" href="xsecure__lms_8h.html#ab14788fbc92abcbc0e153a93b1f28cd2">D</a>, <a class="el" href="struct_x_secure___elliptic_key_addr.html#a1431fb313924c44d173d0df2c8f01b5b">XSecure_EllipticKeyAddr::Qx</a>, <a class="el" href="struct_x_secure___elliptic_key_addr.html#a78bfd8086c63862b2329ec26e7448e9d">XSecure_EllipticKeyAddr::Qy</a>, <a class="el" href="group__xsecure__generic__server__apis.html#ga162af494e626229733557c1c87fb2e15">XSecure_CryptoCheck()</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a1ac6872da48c5879c457fb9e0590c36b">XSECURE_ECC_NIST_P521</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#gad7f0fdd86e7cf849e595e156156b7804">XSECURE_ECC_P521_SIZE_IN_BYTES</a>, <a class="el" href="group__xsecure__helper__server__apis.html#ga7ceaf28c4b557ab6cefc96402262ecc0">XSecure_ECCRandInit()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga2617ad08234f40b7da71060fd6eb9ec7">XSECURE_ECDSA_P521_ALIGN_BYTES</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574a8139861ed2172f9e08100898cb7ecbbc">XSECURE_ELLIPTIC_GEN_KEY_ERR</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574a85dc080b8ec968eb80f0638d2d2027ec">XSECURE_ELLIPTIC_INVALID_PARAM</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga4b04814c049951cd68c6f1a32ffcb707">XSecure_GetData()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#gaeae4245a96b56ed57680a2df01da5944">XSecure_PutData()</a>, <a class="el" href="group__xsecure__generic__server__apis.html#ga448da91f94630d83a52c21b895455ebf">XSecure_ReleaseReset()</a>, and <a class="el" href="group__xsecure__generic__server__apis.html#ga7d9385d1d7121998a9be90e90d3a8f7b">XSecure_SetReset()</a>.</p>

<p>Referenced by <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga3fcdd9235bcbb13f538c106bc6e32bcf">XSecure_EllipticGenerateKey()</a>.</p>

</div>
</div>
<a class="anchor" id="gacfb2a9d041a4b449a47874add5f01547"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int XSecure_EllipticGenerateSignature </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a>&#160;</td>
          <td class="paramname"><em>CrvType</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const u8 *&#160;</td>
          <td class="paramname"><em>Hash</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const u32&#160;</td>
          <td class="paramname"><em>HashLen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const u8 *&#160;</td>
          <td class="paramname"><em>D</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const u8 *&#160;</td>
          <td class="paramname"><em>K</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="struct_x_secure___elliptic_sign.html">XSecure_EllipticSign</a> *&#160;</td>
          <td class="paramname"><em>Sign</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function generates signature for a given hash and curve type. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">CrvType</td><td>Type of elliptic curve </td></tr>
    <tr><td class="paramname">Hash</td><td>Pointer to the hash for which sign has to be generated </td></tr>
    <tr><td class="paramname">HashLen</td><td>Length of the hash in bytes </td></tr>
    <tr><td class="paramname">D</td><td>Pointer to the static private key </td></tr>
    <tr><td class="paramname">K</td><td>Ephemeral private key </td></tr>
    <tr><td class="paramname">Sign</td><td>Pointer to the signature</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>XST_SUCCESS On success</li>
<li>XSECURE_ELLIPTIC_INVALID_PARAM On invalid argument</li>
</ul>
</dd></dl>
<dl class="section note"><dt>Note</dt><dd>K, the ephemeral private key, shall be an unpredictable (cryptographically secure) random number unique for each signature Note that reuse or external predictability of this number generally breaks the security of ECDSA </dd></dl>
<p>Generate signature with provided hash, private key, ephemeral key and curve type</p>

<p>References <a class="el" href="struct_x_secure___elliptic_hash_data.html#a07c12dc312b5f283897e5a4917feedb6">XSecure_EllipticHashData::Addr</a>, <a class="el" href="struct_x_secure___elliptic_hash_data.html#a511f26334411d75a9b5eb2681f2a7464">XSecure_EllipticHashData::Len</a>, <a class="el" href="struct_x_secure___elliptic_sign.html#a39f9f985b86ee5bbf8f301fca4a004f3">XSecure_EllipticSign::SignR</a>, <a class="el" href="struct_x_secure___elliptic_sign_addr.html#acd6064a14b174830f5d05a15a922ce46">XSecure_EllipticSignAddr::SignR</a>, <a class="el" href="struct_x_secure___elliptic_sign.html#a1378dc1cc131e69d07290a9f3e750a8a">XSecure_EllipticSign::SignS</a>, <a class="el" href="struct_x_secure___elliptic_sign_addr.html#a9a334b4c6ecc7e9e58de6f48c79d4850">XSecure_EllipticSignAddr::SignS</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a56563085e91b2916d8b2597aa5b0518c">XSECURE_ECC_NIST_P192</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6ada7c82dece1225d698e071b37a709a7b">XSECURE_ECC_NIST_P224</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a4887100b873751c7ab11f3c25971da31">XSECURE_ECC_NIST_P256</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a96b467bb47305585cbcb31f93d527407">XSECURE_ECC_NIST_P384</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a1ac6872da48c5879c457fb9e0590c36b">XSECURE_ECC_NIST_P521</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#gad7f0fdd86e7cf849e595e156156b7804">XSECURE_ECC_P521_SIZE_IN_BYTES</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574a85dc080b8ec968eb80f0638d2d2027ec">XSECURE_ELLIPTIC_INVALID_PARAM</a>, and <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga3af7e8a366bb982fa4c0c82be1b37250">XSecure_EllipticGenerateSignature_64Bit()</a>.</p>

<p>Referenced by <a class="el" href="group__xsecure__ecdsa__server__apis.html#gae456632737631e0943f3a473c1642f35">XSecure_EllipticGenEphemeralNSign()</a>, and <a class="el" href="group__xsecure__kat__server__apis.html#ga75b2f22f2f6c3bdb9529025c8ecf58f2">XSecure_EllipticSignGenerateKat()</a>.</p>

</div>
</div>
<a class="anchor" id="ga3af7e8a366bb982fa4c0c82be1b37250"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int XSecure_EllipticGenerateSignature_64Bit </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a>&#160;</td>
          <td class="paramname"><em>CrvType</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="struct_x_secure___elliptic_hash_data.html">XSecure_EllipticHashData</a> *&#160;</td>
          <td class="paramname"><em>HashInfo</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const u64&#160;</td>
          <td class="paramname"><em>DAddr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const u64&#160;</td>
          <td class="paramname"><em>KAddr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="struct_x_secure___elliptic_sign_addr.html">XSecure_EllipticSignAddr</a> *&#160;</td>
          <td class="paramname"><em>SignAddr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function generates signature for a given hash and curve type where data is located at 64-bit address. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">CrvType</td><td>Type of elliptic curve </td></tr>
    <tr><td class="paramname">HashInfo</td><td>Pointer to Hash Data i.e. Hash Address and length </td></tr>
    <tr><td class="paramname">DAddr</td><td>Address of the static private key </td></tr>
    <tr><td class="paramname">KAddr</td><td>Ephemeral private key </td></tr>
    <tr><td class="paramname">SignAddr</td><td>Pointer to signature address</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>XST_SUCCESS On success</li>
<li>XSECURE_ELLIPTIC_INVALID_PARAM On invalid argument</li>
<li>XSECURE_ELLIPTIC_NON_SUPPORTED_CRV If curve data pointer is NULL</li>
<li>XSECURE_ELLIPTIC_GEN_SIGN_BAD_RAND_NUM When Bad random number used for sign generation</li>
<li>XSECURE_ELLIPTIC_GEN_SIGN_INCORRECT_HASH_LEN Incorrect hash length for sign generation</li>
<li>XST_FAILURE On any other failures</li>
</ul>
</dd></dl>
<dl class="section note"><dt>Note</dt><dd>K, the ephemeral private key, shall be an unpredictable (cryptographically secure) random number unique for each signature Note that reuse or external predictability of this number generally breaks the security of ECDSA </dd></dl>
<p>Generate signature with provided hash, private key, ephemeral key and curve type.</p>

<p>References <a class="el" href="struct_x_secure___elliptic_hash_data.html#a07c12dc312b5f283897e5a4917feedb6">XSecure_EllipticHashData::Addr</a>, <a class="el" href="struct_ecdsa_crv_info.html#a73e6a9de9816384b5cdef5c52c283952">EcdsaCrvInfo::Bits</a>, <a class="el" href="xsecure__lms_8h.html#ab14788fbc92abcbc0e153a93b1f28cd2">D</a>, <a class="el" href="xsecure__lms__ots_8h.html#a1409f77262465120c3094dcd039e1f32">K</a>, <a class="el" href="struct_x_secure___elliptic_hash_data.html#a511f26334411d75a9b5eb2681f2a7464">XSecure_EllipticHashData::Len</a>, <a class="el" href="struct_x_secure___elliptic_sign_addr.html#acd6064a14b174830f5d05a15a922ce46">XSecure_EllipticSignAddr::SignR</a>, <a class="el" href="struct_x_secure___elliptic_sign_addr.html#a9a334b4c6ecc7e9e58de6f48c79d4850">XSecure_EllipticSignAddr::SignS</a>, <a class="el" href="group__xsecure__generic__server__apis.html#ga162af494e626229733557c1c87fb2e15">XSecure_CryptoCheck()</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a1ac6872da48c5879c457fb9e0590c36b">XSECURE_ECC_NIST_P521</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#gad7f0fdd86e7cf849e595e156156b7804">XSECURE_ECC_P521_SIZE_IN_BYTES</a>, <a class="el" href="group__xsecure__helper__server__apis.html#ga7ceaf28c4b557ab6cefc96402262ecc0">XSecure_ECCRandInit()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga2617ad08234f40b7da71060fd6eb9ec7">XSECURE_ECDSA_P521_ALIGN_BYTES</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574a127805b39c4ad4d4140a913b1bf3ce25">XSECURE_ELLIPTIC_GEN_SIGN_BAD_RAND_NUM</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574a5cfe27959e40581cb43ced3a3451bdeb">XSECURE_ELLIPTIC_GEN_SIGN_INCORRECT_HASH_LEN</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574a85dc080b8ec968eb80f0638d2d2027ec">XSECURE_ELLIPTIC_INVALID_PARAM</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga4b04814c049951cd68c6f1a32ffcb707">XSecure_GetData()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#gaeae4245a96b56ed57680a2df01da5944">XSecure_PutData()</a>, <a class="el" href="group__xsecure__generic__server__apis.html#ga448da91f94630d83a52c21b895455ebf">XSecure_ReleaseReset()</a>, and <a class="el" href="group__xsecure__generic__server__apis.html#ga7d9385d1d7121998a9be90e90d3a8f7b">XSecure_SetReset()</a>.</p>

<p>Referenced by <a class="el" href="group__xsecure__ecdsa__server__apis.html#gacfb2a9d041a4b449a47874add5f01547">XSecure_EllipticGenerateSignature()</a>, and <a class="el" href="group__xsecure__kat__server__apis.html#ga7e6af9c7d2a5b9c134f201143b5caaca">XSecure_EllipticPwct()</a>.</p>

</div>
</div>
<a class="anchor" id="ga0219841abd9a6a67cd5e80f8a5ec0d30"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="struct_ecdsa_crv_info.html">EcdsaCrvInfo</a> * XSecure_EllipticGetCrvData </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a>&#160;</td>
          <td class="paramname"><em>CrvTyp</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function gets the curve related information. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">CrvTyp</td><td>Type of the elliptic curve</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>Crv Curve information </li>
</ul>
</dd></dl>
<p>Get the curve data </p>

<p>References <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a56563085e91b2916d8b2597aa5b0518c">XSECURE_ECC_NIST_P192</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6ada7c82dece1225d698e071b37a709a7b">XSECURE_ECC_NIST_P224</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a4887100b873751c7ab11f3c25971da31">XSECURE_ECC_NIST_P256</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a96b467bb47305585cbcb31f93d527407">XSECURE_ECC_NIST_P384</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a1ac6872da48c5879c457fb9e0590c36b">XSECURE_ECC_NIST_P521</a>, and <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga895d2b6ca4395e34aa3c948bcc09a145">XSecure_EllipticCrvsGetCount()</a>.</p>

<p>Referenced by <a class="el" href="group__xsecure__ecdsa__server__apis.html#gab3835b878d2947b3f94ba4cd555dd641">XSecure_EcdhGetSecret()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga9566bee278ec58acd705a67ee9d58766">XSecure_EllipticGenerateEphemeralKey()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga1d8ce761d128ed9438878593bc349c36">XSecure_EllipticGetCrvSize()</a>, and <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga261ca30dbb2a3390cac39562e499f63a">XSecure_EllipticPrvtKeyGenerate()</a>.</p>

</div>
</div>
<a class="anchor" id="ga1d8ce761d128ed9438878593bc349c36"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">u32 XSecure_EllipticGetCrvSize </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a>&#160;</td>
          <td class="paramname"><em>CrvType</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function gets curve size in bytes. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">CrvType</td><td>Is a type of elliptic curve</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>CrvSize Size of curve in bytes </li>
</ul>
</dd></dl>
<p>Get curve size </p>

<p>References <a class="el" href="struct_ecdsa_crv_info.html#a73e6a9de9816384b5cdef5c52c283952">EcdsaCrvInfo::Bits</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga5bce9c7826b6403ae45442ead7f1cd65">XSECURE_ECDSA_ALGN_CRV_SIZE_IN_BYTES</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#gab4f953836088ef7ce1b74abd75023bde">XSECURE_ECDSA_BITS_IN_BYTES</a>, and <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga0219841abd9a6a67cd5e80f8a5ec0d30">XSecure_EllipticGetCrvData()</a>.</p>

</div>
</div>
<a class="anchor" id="ga898afa7a2d84540bb675ddeaeb33442f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int XSecure_EllipticIpiHandler </td>
          <td>(</td>
          <td class="paramtype">XPlmi_Cmd *&#160;</td>
          <td class="paramname"><em>Cmd</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function calls respective IPI handler based on the API_ID. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">Cmd</td><td>is pointer to the command structure</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>XST_SUCCESS If the handler execution is successful</li>
<li>XST_INVALID_PARAM If Cmd is NULL or API ID is invalid</li>
<li>XST_FAILURE If there is a failure </li>
</ul>
</dd></dl>
<p>Call the respective API handler according to API ID</p>
<ul>
<li>XSecure_EllipticGenKey</li>
<li>XSecure_EllipticGenSign</li>
<li>XSecure_EllipticValidatePubKey</li>
<li>XSecure_EllipticVerifySignature </li>
</ul>

<p>References <a class="el" href="group__xsecure__common__apis.html#ga2f4a1a99096821d10b0719a4ded431d5">XSECURE_API</a>, <a class="el" href="group__xsecure__common__apis.html#gga48921cbba3a5713caf7d975bedbe36acaeab0747eb84fba76e285132d85fae1c4">XSECURE_API_ELLIPTIC_GENERATE_KEY</a>, <a class="el" href="group__xsecure__common__apis.html#gga48921cbba3a5713caf7d975bedbe36aca1eebf4899c7d95eb160c8a83d4c780f8">XSECURE_API_ELLIPTIC_GENERATE_SIGN</a>, <a class="el" href="group__xsecure__common__apis.html#gga48921cbba3a5713caf7d975bedbe36aca01c0ab6477c532f187b729665036b0b8">XSECURE_API_ELLIPTIC_VALIDATE_KEY</a>, <a class="el" href="group__xsecure__common__apis.html#gga48921cbba3a5713caf7d975bedbe36aca0bd0d49b5ae8ddc3957afa1a2e3cc284">XSECURE_API_ELLIPTIC_VERIFY_SIGN</a>, <a class="el" href="group__xsecure__common__apis.html#gaa2f27ea2d621bbdeda76bad8109eb77b">XSECURE_API_ID_MASK</a>, and <a class="el" href="group__xsecure__common__apis.html#ga693c54d224d1fa8ca68b215023b2b359">XSecure_Printf</a>.</p>

</div>
</div>
<a class="anchor" id="ga261ca30dbb2a3390cac39562e499f63a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int XSecure_EllipticPrvtKeyGenerate </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a>&#160;</td>
          <td class="paramname"><em>CrvType</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_x_secure___elliptc_private_key_gen.html">XSecure_ElliptcPrivateKeyGen</a> *&#160;</td>
          <td class="paramname"><em>PrivateKey</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function generates 48-byte key for P-384 curve using TRNG. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">CrvType</td><td>specifies the type of the ECC curve. </td></tr>
    <tr><td class="paramname">PrivateKey</td><td>is the pointer to <a class="el" href="struct_x_secure___elliptc_private_key_gen.html" title="Ecc private key generation parameters. ">XSecure_ElliptcPrivateKeyGen</a></td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>XST_SUCCESS On success</li>
<li>XSECURE_ELLIPTIC_INVALID_PARAM If any input parameter is invalid</li>
<li>XST_FAILURE On failure</li>
</ul>
</dd></dl>
<dl class="section note"><dt>Note</dt><dd>This API expects TRNG HW to be in HEALTHY state, This can be achieved by running preoperational health tests. </dd></dl>

<p>References <a class="el" href="struct_x_secure___elliptc_private_key_gen.html#abf373a41e326c758ccd44e650f173135">XSecure_ElliptcPrivateKeyGen::KeyOutPutAddr</a>, <a class="el" href="struct_x_secure___elliptc_private_key_gen.html#a822ceb194e0af5db1a3f428efee56557">XSecure_ElliptcPrivateKeyGen::PerStringAddr</a>, <a class="el" href="struct_x_secure___elliptc_private_key_gen.html#a98b763c33a4aacfda6714c4cccc506cf">XSecure_ElliptcPrivateKeyGen::SeedAddr</a>, <a class="el" href="struct_x_secure___elliptc_private_key_gen.html#a97c99bbe053b33d57b196f9ef54e316e">XSecure_ElliptcPrivateKeyGen::SeedLength</a>, <a class="el" href="group__xsecure__generic__server__apis.html#ga33e027f1d24fdea13798141323edeae5">XSECURE_CLEAR_BIT</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a96b467bb47305585cbcb31f93d527407">XSECURE_ECC_NIST_P384</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a1ac6872da48c5879c457fb9e0590c36b">XSECURE_ECC_NIST_P521</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga2a9ae41886d6bd60c8b8a0f896847e58">XSECURE_ECC_P384_SIZE_IN_BYTES</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574ae33c163e61619dd45351bc33c6fe3cd3">XSECURE_ECC_PRVT_KEY_GEN_ERR</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#gab50d8d53c6a959b985095de243e7d5c9">XSECURE_ECC_TRNG_DF_LENGTH</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga4b82c9f2c323f6a642a469b883a85bef">XSECURE_ECC_TRNG_RANDOM_NUM_GEN_LEN</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574a85dc080b8ec968eb80f0638d2d2027ec">XSECURE_ELLIPTIC_INVALID_PARAM</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga0219841abd9a6a67cd5e80f8a5ec0d30">XSecure_EllipticGetCrvData()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga4b04814c049951cd68c6f1a32ffcb707">XSecure_GetData()</a>, <a class="el" href="group__xsecure__helper__server__apis.html#ga2c2e4a235c371fce3b328ee07346f690">XSecure_GetTrngInstance()</a>, <a class="el" href="group__xsecure__generic__server__apis.html#ga448da91f94630d83a52c21b895455ebf">XSecure_ReleaseReset()</a>, <a class="el" href="group__xsecure__generic__server__apis.html#ga7d9385d1d7121998a9be90e90d3a8f7b">XSecure_SetReset()</a>, <a class="el" href="group__xsecure__helper__server__apis.html#ga8bd38df529b235dd05c88b7d0612e142">XSECURE_TRNG_USER_CFG_SEED_LIFE</a>, and <a class="el" href="group__xsecure__helper__server__apis.html#ga0ecbeca74fb66d967b6872c46aac2a44">XSecure_UpdateTrngCryptoStatus()</a>.</p>

</div>
</div>
<a class="anchor" id="ga35ed639454381d4bcf89858e55b9c980"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int XSecure_EllipticValidateKey </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a>&#160;</td>
          <td class="paramname"><em>CrvType</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="struct_x_secure___elliptic_key.html">XSecure_EllipticKey</a> *&#160;</td>
          <td class="paramname"><em>Key</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function validates the public key for a given curve type. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">CrvType</td><td>Type of elliptic curve </td></tr>
    <tr><td class="paramname">Key</td><td>Pointer to the public key</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>XST_SUCCESS On success</li>
<li>XSECURE_ELLIPTIC_INVALID_PARAM On invalid argument </li>
</ul>
</dd></dl>
<p>Validate the public key for a given curve type </p>

<p>References <a class="el" href="struct_x_secure___elliptic_key.html#a824bafa48e8262572731b4ae7605e1a4">XSecure_EllipticKey::Qx</a>, <a class="el" href="struct_x_secure___elliptic_key_addr.html#a1431fb313924c44d173d0df2c8f01b5b">XSecure_EllipticKeyAddr::Qx</a>, <a class="el" href="struct_x_secure___elliptic_key.html#a69be86ac66e9e1051bc7f2249f76f698">XSecure_EllipticKey::Qy</a>, <a class="el" href="struct_x_secure___elliptic_key_addr.html#a78bfd8086c63862b2329ec26e7448e9d">XSecure_EllipticKeyAddr::Qy</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a56563085e91b2916d8b2597aa5b0518c">XSECURE_ECC_NIST_P192</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6ada7c82dece1225d698e071b37a709a7b">XSECURE_ECC_NIST_P224</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a4887100b873751c7ab11f3c25971da31">XSECURE_ECC_NIST_P256</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a96b467bb47305585cbcb31f93d527407">XSECURE_ECC_NIST_P384</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a1ac6872da48c5879c457fb9e0590c36b">XSECURE_ECC_NIST_P521</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574a85dc080b8ec968eb80f0638d2d2027ec">XSECURE_ELLIPTIC_INVALID_PARAM</a>, and <a class="el" href="group__xsecure__ecdsa__server__apis.html#gab83385dfd83a7bfdef4d74ec412e15c6">XSecure_EllipticValidateKey_64Bit()</a>.</p>

</div>
</div>
<a class="anchor" id="gab83385dfd83a7bfdef4d74ec412e15c6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int XSecure_EllipticValidateKey_64Bit </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a>&#160;</td>
          <td class="paramname"><em>CrvType</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="struct_x_secure___elliptic_key_addr.html">XSecure_EllipticKeyAddr</a> *&#160;</td>
          <td class="paramname"><em>KeyAddr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function validates the public key for a given curve type where key is located at 64-bit address. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">CrvType</td><td>Type of elliptic curve </td></tr>
    <tr><td class="paramname">KeyAddr</td><td>Pointer to public key address</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>XST_SUCCESS On success</li>
<li>XSECURE_ELLIPTIC_INVALID_PARAM On invalid argument</li>
<li>XSECURE_ELLIPTIC_NON_SUPPORTED_CRV If curve data pointer is NULL</li>
<li>XSECURE_ELLIPTIC_KEY_ZERO When Public key is zero</li>
<li>XSECURE_ELLIPTIC_KEY_WRONG_ORDER Wrong order of Public key</li>
<li>XSECURE_ELLIPTIC_KEY_NOT_ON_CRV When Key is not found on the curve</li>
<li>XST_FAILURE On any other failures </li>
</ul>
</dd></dl>
<p>Validate the public key for a given curve type </p>

<p>References <a class="el" href="struct_x_secure___elliptic_key_addr.html#a1431fb313924c44d173d0df2c8f01b5b">XSecure_EllipticKeyAddr::Qx</a>, <a class="el" href="struct_x_secure___elliptic_key_addr.html#a78bfd8086c63862b2329ec26e7448e9d">XSecure_EllipticKeyAddr::Qy</a>, <a class="el" href="group__xsecure__generic__server__apis.html#ga162af494e626229733557c1c87fb2e15">XSecure_CryptoCheck()</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a1ac6872da48c5879c457fb9e0590c36b">XSECURE_ECC_NIST_P521</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#gad7f0fdd86e7cf849e595e156156b7804">XSECURE_ECC_P521_SIZE_IN_BYTES</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga2617ad08234f40b7da71060fd6eb9ec7">XSECURE_ECDSA_P521_ALIGN_BYTES</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574a85dc080b8ec968eb80f0638d2d2027ec">XSECURE_ELLIPTIC_INVALID_PARAM</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574a11a5820deacf8cd6d5e0576b268fc1a0">XSECURE_ELLIPTIC_KEY_NOT_ON_CRV</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574a0faf938abdac9e0d6c8a949493431c61">XSECURE_ELLIPTIC_KEY_WRONG_ORDER</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574a83b58599bb19054f82b8b0ae035b789a">XSECURE_ELLIPTIC_KEY_ZERO</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#gaeae4245a96b56ed57680a2df01da5944">XSecure_PutData()</a>, <a class="el" href="group__xsecure__generic__server__apis.html#ga448da91f94630d83a52c21b895455ebf">XSecure_ReleaseReset()</a>, and <a class="el" href="group__xsecure__generic__server__apis.html#ga7d9385d1d7121998a9be90e90d3a8f7b">XSecure_SetReset()</a>.</p>

<p>Referenced by <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga35ed639454381d4bcf89858e55b9c980">XSecure_EllipticValidateKey()</a>.</p>

</div>
</div>
<a class="anchor" id="ga7d2dfbb593a38b3bb47d1ab26fb0cfea"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int XSecure_EllipticVerifySign </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a>&#160;</td>
          <td class="paramname"><em>CrvType</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const u8 *&#160;</td>
          <td class="paramname"><em>Hash</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const u32&#160;</td>
          <td class="paramname"><em>HashLen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="struct_x_secure___elliptic_key.html">XSecure_EllipticKey</a> *&#160;</td>
          <td class="paramname"><em>Key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="struct_x_secure___elliptic_sign.html">XSecure_EllipticSign</a> *&#160;</td>
          <td class="paramname"><em>Sign</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function verifies the signature for a given hash, key and curve type. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">CrvType</td><td>Type of elliptic curve </td></tr>
    <tr><td class="paramname">Hash</td><td>Pointer to the hash for which sign has to be generated </td></tr>
    <tr><td class="paramname">HashLen</td><td>Length of hash in bytes </td></tr>
    <tr><td class="paramname">Key</td><td>Pointer to the public key </td></tr>
    <tr><td class="paramname">Sign</td><td>Pointer to the signature</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>XST_SUCCESS On success</li>
<li>XSECURE_ELLIPTIC_INVALID_PARAM On invalid argument </li>
</ul>
</dd></dl>
<p>Verify signature with provided hash, public key and curve type </p>

<p>References <a class="el" href="struct_x_secure___elliptic_hash_data.html#a07c12dc312b5f283897e5a4917feedb6">XSecure_EllipticHashData::Addr</a>, <a class="el" href="struct_x_secure___elliptic_hash_data.html#a511f26334411d75a9b5eb2681f2a7464">XSecure_EllipticHashData::Len</a>, <a class="el" href="struct_x_secure___elliptic_key.html#a824bafa48e8262572731b4ae7605e1a4">XSecure_EllipticKey::Qx</a>, <a class="el" href="struct_x_secure___elliptic_key_addr.html#a1431fb313924c44d173d0df2c8f01b5b">XSecure_EllipticKeyAddr::Qx</a>, <a class="el" href="struct_x_secure___elliptic_key.html#a69be86ac66e9e1051bc7f2249f76f698">XSecure_EllipticKey::Qy</a>, <a class="el" href="struct_x_secure___elliptic_key_addr.html#a78bfd8086c63862b2329ec26e7448e9d">XSecure_EllipticKeyAddr::Qy</a>, <a class="el" href="struct_x_secure___elliptic_sign.html#a39f9f985b86ee5bbf8f301fca4a004f3">XSecure_EllipticSign::SignR</a>, <a class="el" href="struct_x_secure___elliptic_sign_addr.html#acd6064a14b174830f5d05a15a922ce46">XSecure_EllipticSignAddr::SignR</a>, <a class="el" href="struct_x_secure___elliptic_sign.html#a1378dc1cc131e69d07290a9f3e750a8a">XSecure_EllipticSign::SignS</a>, <a class="el" href="struct_x_secure___elliptic_sign_addr.html#a9a334b4c6ecc7e9e58de6f48c79d4850">XSecure_EllipticSignAddr::SignS</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a56563085e91b2916d8b2597aa5b0518c">XSECURE_ECC_NIST_P192</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6ada7c82dece1225d698e071b37a709a7b">XSECURE_ECC_NIST_P224</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a4887100b873751c7ab11f3c25971da31">XSECURE_ECC_NIST_P256</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a96b467bb47305585cbcb31f93d527407">XSECURE_ECC_NIST_P384</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a1ac6872da48c5879c457fb9e0590c36b">XSECURE_ECC_NIST_P521</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#gad7f0fdd86e7cf849e595e156156b7804">XSECURE_ECC_P521_SIZE_IN_BYTES</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574a85dc080b8ec968eb80f0638d2d2027ec">XSECURE_ELLIPTIC_INVALID_PARAM</a>, and <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga0bb6ca50d138b482eb9a5d9f18e398d8">XSecure_EllipticVerifySign_64Bit()</a>.</p>

</div>
</div>
<a class="anchor" id="ga0bb6ca50d138b482eb9a5d9f18e398d8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int XSecure_EllipticVerifySign_64Bit </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__xsecure__common__apis.html#ga7aecdb57be4a4242f11ad3e3bebb42e6">XSecure_EllipticCrvTyp</a>&#160;</td>
          <td class="paramname"><em>CrvType</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="struct_x_secure___elliptic_hash_data.html">XSecure_EllipticHashData</a> *&#160;</td>
          <td class="paramname"><em>HashInfo</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="struct_x_secure___elliptic_key_addr.html">XSecure_EllipticKeyAddr</a> *&#160;</td>
          <td class="paramname"><em>KeyAddr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="struct_x_secure___elliptic_sign_addr.html">XSecure_EllipticSignAddr</a> *&#160;</td>
          <td class="paramname"><em>SignAddr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function verifies the signature for a given hash, key and curve type where data is located at 64-bit address. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">CrvType</td><td>Type of elliptic curve </td></tr>
    <tr><td class="paramname">HashInfo</td><td>Pointer to Hash Data i.e. Hash Address and length </td></tr>
    <tr><td class="paramname">KeyAddr</td><td>Pointer to public key address </td></tr>
    <tr><td class="paramname">SignAddr</td><td>Pointer to signature address</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>XST_SUCCESS On success</li>
<li>XSECURE_ELLIPTIC_INVALID_PARAM On invalid argument</li>
<li>XSECURE_ELLIPTIC_NON_SUPPORTED_CRV If curve data pointer is NULL</li>
<li>XSECURE_ELLIPTIC_BAD_SIGN When signature provided for verification is bad</li>
<li>XSECURE_ELLIPTIC_VER_SIGN_INCORRECT_HASH_LEN Incorrect hash length for sign verification</li>
<li>XSECURE_ELLIPTIC_VER_SIGN_R_ZERO R set to zero</li>
<li>XSECURE_ELLIPTIC_VER_SIGN_S_ZERO S set to zero</li>
<li>XSECURE_ELLIPTIC_VER_SIGN_R_ORDER_ERROR R is not within ECC order</li>
<li>XSECURE_ELLIPTIC_VER_SIGN_S_ORDER_ERROR S is not within ECC order</li>
<li>XST_FAILURE On any other failures </li>
</ul>
</dd></dl>
<p>Verify signature with provided hash, public key and curve type </p>

<p>References <a class="el" href="struct_x_secure___elliptic_hash_data.html#a07c12dc312b5f283897e5a4917feedb6">XSecure_EllipticHashData::Addr</a>, <a class="el" href="struct_ecdsa_crv_info.html#a73e6a9de9816384b5cdef5c52c283952">EcdsaCrvInfo::Bits</a>, <a class="el" href="struct_x_secure___elliptic_hash_data.html#a511f26334411d75a9b5eb2681f2a7464">XSecure_EllipticHashData::Len</a>, <a class="el" href="struct_x_secure___elliptic_key_addr.html#a1431fb313924c44d173d0df2c8f01b5b">XSecure_EllipticKeyAddr::Qx</a>, <a class="el" href="struct_x_secure___elliptic_key_addr.html#a78bfd8086c63862b2329ec26e7448e9d">XSecure_EllipticKeyAddr::Qy</a>, <a class="el" href="struct_x_secure___elliptic_sign_addr.html#acd6064a14b174830f5d05a15a922ce46">XSecure_EllipticSignAddr::SignR</a>, <a class="el" href="struct_x_secure___elliptic_sign_addr.html#a9a334b4c6ecc7e9e58de6f48c79d4850">XSecure_EllipticSignAddr::SignS</a>, <a class="el" href="group__xsecure__generic__server__apis.html#ga162af494e626229733557c1c87fb2e15">XSecure_CryptoCheck()</a>, <a class="el" href="group__xsecure__common__apis.html#gga7aecdb57be4a4242f11ad3e3bebb42e6a1ac6872da48c5879c457fb9e0590c36b">XSECURE_ECC_NIST_P521</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#gad7f0fdd86e7cf849e595e156156b7804">XSECURE_ECC_P521_SIZE_IN_BYTES</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga2617ad08234f40b7da71060fd6eb9ec7">XSECURE_ECDSA_P521_ALIGN_BYTES</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574a18a716562563208f5e88a88ec50df500">XSECURE_ELLIPTIC_BAD_SIGN</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574a85dc080b8ec968eb80f0638d2d2027ec">XSECURE_ELLIPTIC_INVALID_PARAM</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574acc2d05ce3aeec10732ec209e18031720">XSECURE_ELLIPTIC_VER_SIGN_INCORRECT_HASH_LEN</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574a15e2df039013013886c345c133edc35e">XSECURE_ELLIPTIC_VER_SIGN_R_ORDER_ERROR</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574a5da0de9f27b7012473ee7f7e0e4d0747">XSECURE_ELLIPTIC_VER_SIGN_R_ZERO</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574ac1c1e6e13381f0a298de3233ef6104ee">XSECURE_ELLIPTIC_VER_SIGN_S_ORDER_ERROR</a>, <a class="el" href="group__xsecure__error__codes.html#ggacba8dc046b878afa42fdc63ce1dc2574a77bc8e1afed29bac66f985179da277d8">XSECURE_ELLIPTIC_VER_SIGN_S_ZERO</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#gaeae4245a96b56ed57680a2df01da5944">XSecure_PutData()</a>, <a class="el" href="group__xsecure__generic__server__apis.html#ga448da91f94630d83a52c21b895455ebf">XSecure_ReleaseReset()</a>, and <a class="el" href="group__xsecure__generic__server__apis.html#ga7d9385d1d7121998a9be90e90d3a8f7b">XSecure_SetReset()</a>.</p>

<p>Referenced by <a class="el" href="group__xsecure__kat__server__apis.html#ga7e6af9c7d2a5b9c134f201143b5caaca">XSecure_EllipticPwct()</a>, and <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga7d2dfbb593a38b3bb47d1ab26fb0cfea">XSecure_EllipticVerifySign()</a>.</p>

</div>
</div>
<a class="anchor" id="gab4982b81bdf14b95cfbf9ec1be61bf61"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void XSecure_FixEndiannessNCopy </td>
          <td>(</td>
          <td class="paramtype">const u32&#160;</td>
          <td class="paramname"><em>Size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u64&#160;</td>
          <td class="paramname"><em>DstAddr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const u64&#160;</td>
          <td class="paramname"><em>SrcAddr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function copies data to destination based on library endianness selection. </p>
<pre class="fragment">    - Changes the endianness when library is operating in little endian
    - Copies data without changing any endianness when library is
    operating in big endain.
</pre><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">Size</td><td>Length of data in bytes </td></tr>
    <tr><td class="paramname">SrcAddr</td><td>Address of the source buffer </td></tr>
    <tr><td class="paramname">DstAddr</td><td>Destination address</td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>This is the helper function to convert the endianness as required. </dd></dl>

<p>References <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga6a551adc342018909d5b53bffca62d3a">XSECURE_ELLIPTIC_LITTLE_ENDIAN</a>.</p>

</div>
</div>
<a class="anchor" id="ga4b04814c049951cd68c6f1a32ffcb707"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void XSecure_GetData </td>
          <td>(</td>
          <td class="paramtype">const u32&#160;</td>
          <td class="paramname"><em>Size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const u8 *&#160;</td>
          <td class="paramname"><em>Src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const u64&#160;</td>
          <td class="paramname"><em>DstAddr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function copies data to 32/64 bit address from local buffer. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">Size</td><td>Length of data in bytes </td></tr>
    <tr><td class="paramname">Src</td><td>Pointer to the source buffer </td></tr>
    <tr><td class="paramname">DstAddr</td><td>Destination address </td></tr>
  </table>
  </dd>
</dl>
<p>Copies data to provided address from local buffer based on the endianness configured</p>

<p>References <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga6a551adc342018909d5b53bffca62d3a">XSECURE_ELLIPTIC_LITTLE_ENDIAN</a>.</p>

<p>Referenced by <a class="el" href="group__xsecure__ecdsa__server__apis.html#gab3835b878d2947b3f94ba4cd555dd641">XSecure_EcdhGetSecret()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga9566bee278ec58acd705a67ee9d58766">XSecure_EllipticGenerateEphemeralKey()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga682282def21e1c86ab583cdd41090fbb">XSecure_EllipticGenerateKey_64Bit()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga3af7e8a366bb982fa4c0c82be1b37250">XSecure_EllipticGenerateSignature_64Bit()</a>, and <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga261ca30dbb2a3390cac39562e499f63a">XSecure_EllipticPrvtKeyGenerate()</a>.</p>

</div>
</div>
<a class="anchor" id="ga5c01365d664f53f9b987711c52f7bee8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int XSecure_PlatEllipticIpiHandler </td>
          <td>(</td>
          <td class="paramtype">XPlmi_Cmd *&#160;</td>
          <td class="paramname"><em>Cmd</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function calls respective IPI handler based on the API_ID. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">Cmd</td><td>is pointer to the command structure</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>XST_SUCCESS If the handler execution is successful</li>
<li>XST_INVALID_PARAM If any parameter is invalid.</li>
<li>XST_FAILURE If there is a failure </li>
</ul>
</dd></dl>

<p>References <a class="el" href="group__xsecure__common__apis.html#ga2f4a1a99096821d10b0719a4ded431d5">XSECURE_API</a>, <a class="el" href="group__xsecure__common__apis.html#gga48921cbba3a5713caf7d975bedbe36acab281f47d0b6c949e695c0173ff9d0dc7">XSECURE_API_GEN_SHARED_SECRET</a>, <a class="el" href="group__xsecure__common__apis.html#gaa2f27ea2d621bbdeda76bad8109eb77b">XSECURE_API_ID_MASK</a>, <a class="el" href="group__xsecure__ecdsa__client__apis.html#ga0e90d7253656c56458e39541009e4954">XSecure_GenSharedSecret()</a>, and <a class="el" href="group__xsecure__common__apis.html#ga693c54d224d1fa8ca68b215023b2b359">XSecure_Printf</a>.</p>

</div>
</div>
<a class="anchor" id="gaeae4245a96b56ed57680a2df01da5944"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void XSecure_PutData </td>
          <td>(</td>
          <td class="paramtype">const u32&#160;</td>
          <td class="paramname"><em>Size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u8 *&#160;</td>
          <td class="paramname"><em>Dst</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const u64&#160;</td>
          <td class="paramname"><em>SrcAddr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function copies data from 32/64 bit address to local buffer. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">Size</td><td>Length of data in bytes </td></tr>
    <tr><td class="paramname">Dst</td><td>Pointer to the destination buffer </td></tr>
    <tr><td class="paramname">SrcAddr</td><td>Source address </td></tr>
  </table>
  </dd>
</dl>
<p>Copies data from provided address to local buffer based on the endianness configured</p>

<p>References <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga6a551adc342018909d5b53bffca62d3a">XSECURE_ELLIPTIC_LITTLE_ENDIAN</a>.</p>

<p>Referenced by <a class="el" href="group__xsecure__ecdsa__server__apis.html#gab3835b878d2947b3f94ba4cd555dd641">XSecure_EcdhGetSecret()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga682282def21e1c86ab583cdd41090fbb">XSecure_EllipticGenerateKey_64Bit()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga3af7e8a366bb982fa4c0c82be1b37250">XSecure_EllipticGenerateSignature_64Bit()</a>, <a class="el" href="group__xsecure__ecdsa__server__apis.html#gab83385dfd83a7bfdef4d74ec412e15c6">XSecure_EllipticValidateKey_64Bit()</a>, and <a class="el" href="group__xsecure__ecdsa__server__apis.html#ga0bb6ca50d138b482eb9a5d9f18e398d8">XSecure_EllipticVerifySign_64Bit()</a>.</p>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
	<p class="footer">&copy; Copyright 2015-2022 Xilinx, Inc. All Rights Reserved.</p>
	<p class="footer">&copy; Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.</p>
</div>
</body>
</html>
